package com.nl.idempotent.config;

import com.nl.idempotent.IdempotentAspect;
import com.nl.idempotent.dao.IdempotentDao;
import com.nl.idempotent.dao.IdempotentDaoImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * 自动装配.
 *
 * @author breggor
 */
@Slf4j
@Configuration
public class AutoConfiguration {

    /**
     * 锁拦截器.
     *
     * @return 锁拦截器
     */
    @Bean
    @ConditionalOnMissingBean
    public IdempotentAspect idempotentAspect() {
        return new IdempotentAspect();
    }

    /**
     * 幂等操作接口.
     *
     * @return 幂等操作接口
     */
    @Bean
    @ConditionalOnMissingBean
    public IdempotentDao idempotentDao() {
        return new IdempotentDaoImpl();
    }
}
